In the field of data communication, data is typically compressed so that the amount of information being transmitted is reduced. Such data compression enables less traffic and therefore faster transmission. Compression also reduces storage requirements, which is especially important in communication to portable or mobile communication devices with limited storage capacity. In conventional communication between a server and a mobile communication device, requested data, such as message data, a website, or a digital file, is encoded, or compressed, by the server, and then transmitted. A decoder at the mobile communication device decodes the compressed data, and processes it appropriately, such as displaying it to the user.
Side information, defining parameters to be used in the compression and decompression of transmitted data, can improve compression performance. The choice of parameters and, therefore, the side information that defines those parameters, influences the compression ratio achieved by the compression. Significantly improved compression can be achieved in systems, known as interactive compression systems, that maintain shared and coherent caches of side information. With the implementation of grammar-based compression technologies, such as Yang-Kieffer (YK) universal data compression, the compression parameters, including the grammar rules and frequency counts, are updated as the compression algorithm evolves the grammar associated with the data being compressed. Related data may share some common portion of the grammar. Thus, knowledge of previously communicated data and the data currently being requested could be used to improve compression performance, and to provide interactive compression. However, side information has not previously included such knowledge, nor has a method for maintaining and sharing a coherent cache of such knowledge previously been proposed.
It is, therefore, desirable to provide a method of determining compression state information for use in interactive compression.